ICTSC2018 本戦 問題解説: (焦がしにんにくのマー油と葱油が香る ザ★チャーハン )
問題文
MSPに管理を依頼している踏み台サーバから中にあるアプリケーションサーバに、公開鍵認証でログインできなくなってしまった。君たちの手元からアプリケーションサーバには疎通がなく、踏み台サーバーを経由してsshを行う必要がある。困ったことに、アプリケーションサーバのsshd_configにはパスワード認証を許可する設定がされていない。
どうやらログインできなくなる前が新入社員が踏み台サーバーでなんらかの作業を行っていたらしい、なんとかしてアプリケーションサーバにログインできるようにしてほしい。
社内ではログイン方法がマニュアル化されているため、かならず下記コマンドでログインができるようにしてほしい
ちなみに、管理を依頼している会社は怠け者集団で月曜日までは対応ができないとのことだ。
情報
踏み台サーバ (wow_bastion)
IPアドレス: 192.168.6.1
(踏み台), 192.168.6.129
(アプリケーションネットワーク)
ユーザー: admin
パスワード: n0stack/n0stack
アプリケーションサーバ (wow_target)
IPアドレス: 192.168.6.130
ユーザー: admin
パスワード: なし (公開鍵認証)
目標サーバのadminユーザーには、 踏み台サーバの /home/admin/.ssh/id_ecdsa
に対応する公開鍵が設置されている。
トラブルの概要
公開鍵認証を用いたsshを行うとき、ローカルの同名ファイル(id_ecdsaとid_ecdsa.pubなど)がキーペアになってない場合に、認証がスキップされてログインできない問題。
解説
この問題は、踏み台サーバから公開鍵認証を用いたsshログインができなくなるトラブルです。
LinuxのSSHクライアントから公開鍵認証で接続する際は、 -i
で公開鍵を選択するか、 ~/.ssh
の配下にあるファイルが読み込まれます。 ファイルが読み込まれた際に、秘密鍵の名前に加えて .pub
がついたファイルが存在していた場合、そのファイルが秘密鍵とペアである公開鍵かのチェックが行われ、一致しなかった場合はログインが出来ないという問題があります。 また、この問題は .pub
ファイルが存在しない場合には行われず、接続に成功します。
踏み台サーバの作業履歴をみるとホームディレクトリのtarballが展開されて、公開鍵が上書きされていることがわかります。
想定回答としては、ssh-keygen コマンドを用いて秘密鍵から公開鍵を再生成する事を想定しています。 ssh-keygen -y -f ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub
それ以外にも、 .pub
ファイルが存在しない場合に接続が成功することがあるため、当該ファイルを削除しても解決可能ですが、この問題の場合は一部減点をしています。 rm ~/.ssh/id_ecdsa.pub
回答例
お疲れ様です。解答を提出いたします。
ssh [email protected] -vvv
で踏み台のid_ecdsaのオファーが途中でスキップされていることを確認しました。
history
で ~/pubkey.tar.gz
が展開された形跡があることを確認しました。
ssh-keygen -l -f ~/.ssh/id_ecdsa
ssh-keygen -l -f ~/.ssh/id_ecdsa.pub
でこの2つのファイルがキーペアになっていないことを確認しました。
mv ~/.ssh/id_ecdsa.pub ~/.ssh/id_ecdsa.pub.old
のようなコマンドで展開された公開鍵のバックアップを取りました。
ssh-keygen -yf ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub
でキーペアになる公開鍵を生成しました。
ssh [email protected]
でログインできることを確認しました。
採点基準
/home/admin/.ssh
内に配置されている id_ecdsa
と id_ecdsa.pub
がキーペアでなくなっていることに気づく: 50%
目標サーバに /home/admin/.ssh/id_ecdsa
を用いでログインができる 100%
/home/admin/.ssh/id_ecdsa
から公開鍵を生成していない場合は減点